package fournisseur.rmi.src;

import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
import java.util.Random;

import serveurChatRMI.rmi.interfaces.InterfaceServeurForum;
import serveurChatRMI.rmi.interfaces.InterfaceSujetDiscussion;
import serveurChatRMI.rmi.src.SujetDiscussion;
import fournisseur.rmi.interfaces.InterfaceFournisseur;

public class Fournisseur extends UnicastRemoteObject implements InterfaceFournisseur {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6894648831417894506L;
	private SujetDiscussion sd;
	
	
	private Fournisseur(String titre) throws RemoteException {
		sd = new SujetDiscussion(titre);
	}
	
	@Override
	public InterfaceSujetDiscussion getSujetDiscussion()
			throws RemoteException {
		
		return sd;
		
	}

	/**
	 * 
	 * @param args Le premier parametre permet de definir le nom du chat et le second l'adresse du serveur
	 * @throws RemoteException
	 * @throws UnknownHostException
	 * @throws MalformedURLException
	 * @throws NotBoundException
	 */
	public static void main(String[] args) throws RemoteException, UnknownHostException, MalformedURLException, NotBoundException {

		
		Fournisseur fournisseur = new Fournisseur(args[0]);
		
		//ouverture du serveur fournisseur
		int port = 8000;
		if (args.length<3) {
			Random r = new Random();
			port = 8000 + r.nextInt(100);
		} else {
			port = Integer.parseInt(args[2]);
		}
		
		
		
		System.out.println("port utilise : "+port);
		
		LocateRegistry.createRegistry(port);
		
   	
    	String url ="rmi://" + InetAddress.getLocalHost().getHostAddress() +":"+port+ "/fournisseur";
	    System.out.println("Enregistrement de l'objet avec l'url : " + url);
		Naming.rebind(url, fournisseur);
		
		//Connection et inscription sur le serveur
		String serveurUrl  = "rmi://"+args[1]+"/serveur1";
		InterfaceServeurForum serveur = (InterfaceServeurForum) Naming.lookup(serveurUrl);
			
		serveur.ajoutSujet(args[0], url);
		
		
	}

}
